var express = require('express');
var router = express.Router();      // express 内置的 路由模块 

var {
  aesEncrypt,
  keys,
  aesDecrypt
} = require("../utils")


var {
  Mv 
} = require("../utils/model")

/* GET home page. */

// get get请求
// req  请求对象  前端发到后端的请求 
// res  响应对象  返回的数据
// next 进入下一个中间键 
// res.render  返回的数据  render 渲染模板  
router.get('/', function(req, res, next) {
  console.log(req.session)
  res.render('index',
    { 
      title: '千锋系统',
      word:"node is so easy1233",
      msg:"Are you oK",
      tag:"<b>我希望我可以精通所有的编程语言...</b>",
      flag:!!0,
      username:req.session.username,
      time:new Date(),
      list:['渣渣潘',"帅做做","胖雷雷","小小胡"]
  
    });
});


router.get("/login",(req,res)=>{
    var {username} = req.query;
    console.log(username);
    username = username ? aesDecrypt(username,keys) : username;
    res.render("login",{username});
})


// 注册页面
router.get("/register",(req,res)=>{
  res.render("register")
})

// 退出 注销登录
router.get("/logout",(req,res)=>{
  // session 
  req.session.destroy(()=>{
    res.redirect("/");
  })
})


router.get("/movie",(req,res)=>{
  if(req.session.username){

    const query = req.query;
    var sortObj = {};
    var obj = {};
    if(query.keyword){
      // 模糊搜索
      obj = {
        $or:[
          {
            title:new RegExp(query.keyword),
          },
          {
            'rating.average':new RegExp(query.keyword),
          },
          {
            'genres':new RegExp(query.keyword),
          },
          {
            'year':new RegExp(query.keyword),
          },
        ]
      }
    }else{
      // 排序
      sortObj = query
    }

    Mv.find(obj,{_id:0})
    .sort(sortObj)
    .then(result=>{
      // console.log(result);
      res.render("movie",{username:req.session.username,result})
    })
    .catch(err=>{
      res.render("error",{err})
    })
  }else{
    res.send(`<script>alert('你登录过期,请重新登录...');location.href='/login'</script>`)
  }
  
})

router.get("/chat",(req,res)=>{
  if(req.session.username){
      res.render("chat",{username:req.session.username})
  }else{
    res.send(`<script>alert('你登录过期,请重新登录...');location.href='/login'</script>`)
  }
})

router.get("/checkLogin",(req,res)=>{
    res.json({
        msg:req.session.username?"已经登录":"暂未登录",
        username:req.session.username,
        code:req.session.username?"20000":"40000",
    })
})

// res.render 渲染HTML模板
// res.send   返回 html 或者 字符串 
// res.json   返回 json 格式 

router.get("/demo",(req,res)=>{
  res.send("这是 一个demo 路由测试接口...")
})


router.get("/test",(req,res)=>{
  console.log(req.url);

  // url.parse(req.url,true).query
  res.json({
    code:200,
    msg:"请求成功....",
    url:req.url,
    query:req.query, // 获取 get请求的查询参数 search 
    headers:req.headers
  })
})

router.get("/like",(req,res)=>{
  res.send("这是一个 like 路由...")
});


router.get("/reset",(req,res)=>{
  res.render("reset");
})

router.post("/submit",(req,res)=>{
  res.json({
    msg:"提交成功",
    code:200,
    body:req.body // post 请求 参数 
  })
})

router.all("/all",(req,res)=>{
  res.json({
    msg:"这是一个多 方式的请求 get && post"
  })
})

module.exports = router; // 子路由暴露 
